Main ----- Copyright Up Previous Next

Special Tags

hsc adds some special tags, which can be quite useful for maintainers of big HTML-projects.


Comments

You can insert a comment with
<* This is a hsc-comment *>
You can also nest such comments.

And you can comment out sections of html-source without any problems for the browser. This simply is possible because comments in the HSC-source are not written to the HTML-object.

Of course, if you need the standard comments, you can use

<!-- This is a html/sgml-comment -->
as usual.


Execute shell command

A shell command can be executed with
    <$exec COMMAND="command">
An example usage would be to insert a listing of a directory:
<$if (__SYSTEM__="AMIGA")>

<$exec COMMAND="list >t:hugo.list DIRS">   <* write listing to "t:hugo.list" *>
<$include FILE="t:hugo.list" SOURCE PRE>   <* include directory list *>
<$exec COMMAND="delete t:hugo.list QUIET"> <* remove temporary file *>

<$else><$if (__SYSTEM__="UNIX")>

<$exec COMMAND="ls -al >hugo.list">       <* write listing to "t:hugo.list" *>
<$include FILE="hugo.list" SOURCE PRE>    <* include directory list *>
<$exec COMMAND="rm hugo.list">            <* remove temporary file *>

<$else>

<* unknown OS: abort conversion with error message *>
<$message text="operating system not supported" class="fatal">

</$if></$if>
And the data created by this code sequence would look like this:
exmpl                        Dir ----rwed Sunday    23:07:53
features                     Dir ----rwed Today     10:26:52
image                        Dir ----rwed 31-Mar-96 02:38:13
inc                          Dir ----rwed 24-Apr-96 19:01:32
macro                        Dir ----rwed Monday    00:35:09
5 directories - 10 blocks used
If the command's return code is not equal to zero, a warning message will be displayed.

Conditional conversion

As there is a lot to tell about this feature, it has it's own page.

Include file

A hsc-file can be included to the text using
<$include FILE="filename" [SOURCE] [PRE]>
If you include a file this way, it is handled as an usual hsc-file. That means, all tags and special characters are handled as before.

To include a source file, eg a C- or HTML-source so that the tags are not interpreted but displayed, add the optional boolean attribute SOURCE.

<$include FILE="hugo.c" SOURCE>
Now the basic special characters "<", ">" and "&" are replaced by their entities.

Note that this does not include a <PRE>-tag to render the text as it exists with the same line breaks and spaces.

To get this done, you should use the optional boolean attribute PRE. This inserts a <PRE> before the included data and a </PRE> afterwards.


Insert several stuff

You can insert several stuff using the tag
<$insert what [options]>

Insert current date and time

You can insert the current date and time simply by
<$insert TIME>
using a default format.

Optionally, you can pass a format-string, that discribes the time. As hsc just calls the ANSI-C function strftime() to perform that task, you can use the same format specifications. Example:

<$insert TIME FORMAT="%b %d %y">
inserts current date with the strange ANSI-C __TIME__-format.

Insert text

As an required argument, you must give a string that contains the text. Example:
<$insert TEXT="hugo was here!">
inserts the text "hugo was here". Of course, this does not make much sense.<$insert TEXT="..."> is suggested to be used with attribute values. Example:
<$insert TEXT=<href>>
inserts the value of the macro-attribute href.

Define attributes

You can create an attribute and pass a value to it via
<$define attribute>

If you define an attribute via <$define> inside a macro, it is of local existence only and is removed after processing the macro. You can suppress this with using the attribute flag /GLOBAL: in this case, the attribute exists until the end of conversion.

You can use the flag /CONST to make the attribute read-only. That means it can't be overwritten by <$let>


Set new attribute value

You can update an attribute's value with
<$let attribute_name = new_value>
Example:
    <$define hugo:string="hugo">       <* create hugo and set to "hugo" *>
    <$let hugo=(hugo+" ist doof.")>    <* update it to "hugo ist doof." *>

Define macros

I think, this feature needs an own page...

User messages

During conversion, you can invoke messages by yourself using
    <$message TEXT="message text" [CLASS="class"]>
For an example, look at <$exec>.

Insert expression

This tag is used to insert data of attributes an expressions. For example:
    <$define hugo:string="hugo">       <* create hugo and set to "hugo" *>
    <(hugo+" ist doof.")>              <* insert text "hugo ist doof." *>

Don't parse section

If you created some perverted HTML source or use features hsc can't handle (which is theoretically impossible), you can keep of hsc from parsing this section by surrounding it with <| ... |>. Of course, this is a dirty hide-out and should be used only for special cases.

Define a new entity

This tag should be used within hsc.prefs only. It defines a new entity.

Define a new tag

This tag should be used within hsc.prefs only. It defines a new tag, and is used quite similar to <$macro>.

Thomas Aglassinger ( agi@giga.or.at ), 15-May-1996